Cargar múltiples archivos con PHP
Cargar múltiples archivos con PHP. De manera muy rápida explicaremos la forma de cargar varios archivos con un solo formulario usando HTML, PHP y CSS. Los ficheros a cargar pueden ser imágenes, documentos de texto y/o Audio y video. Sin embargo, debemos de verificar cual es la cantidad máxima de carga que nos permite subir el servidor.
Cargar múltiples archivos con PHP
¿Se podría cargar múltiples archivos en un mismo formulario?
Si se puede y para dar solución a esta incógnita es que nos decidimos a crear este articulo para despejar sus dudas.
Requisitos para el sistema (Cargar múltiples archivos):
- Servidor local
- PHP como lenguaje de programación
- Bootstrap (CSS) y jQuery.
Revisaremos nuestro formulario como punto número uno (1). Tenemos que declarar obligatoriamente el atributo llamada (enctype=”multipart/form-data») en la etiqueta FORM. Sin embargo, sin este atributo será imposible subir cualquier fichero al servidor.
Ahora datos a tener en cuenta, el atributo «enctype» sólo puede utilizarse cuando declaramos al método «post».
El resultado del formulario es el siguiente:
index.php
<!DOCTYPE html> <html> <head> <meta charset=utf-8> <title>Capturar pantalla del sitio web desde URL PHP</title> <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css"> <script src="https://code.jquery.com/jquery-3.2.1.min.js" ></script> <script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/js/bootstrap.min.js" ></script> <style type="text/css"> * { font-family:Segoe, "Segoe UI", "DejaVu Sans", "Trebuchet MS", Verdana, sans-serif } .main { margin:auto; border:1px solid #7C7A7A; width:70%; text-align:left; padding:30px; background:#85c587 } input[type=submit] { background:#6ca16e; width:100%; padding:5px 15px; background:#ccc; cursor:pointer; font-size:16px; } input[type=text] { width:40%; padding:5px 15px; height:25px; font-size:16px; } .form-control { padding: 0px 0px; } </style> </head> <body bgcolor="#bed7c0"> <br> <div class="main"> <h1>Cargar múltiples archivos PHP</h1> <div class="panel panel-primary"> <div class="panel-body"> <form name="MiForm" id="MiForm" method="post" action="cargar.php" enctype="multipart/form-data"> <h4 class="text-center">Cargar Múltiple Archivos</h4> <div class="form-group"> <label class="col-sm-2 control-label">Archivos</label> <div class="col-sm-8"> <input type="file" class="form-control" id="miarchivo[]" name="miarchivo[]" multiple=""> </div> <button type="submit" class="btn btn-primary">Cargar Multiple</button> </div> </form> </div> </div> </div> </body> </html>
Resultado si lo ejecutamos en el navegador.

Listo ya tenemos nuestro formulario y tenemos que presionar el botón Cargar Múltiple y este enviara la información al script cargar.php.
cargar.php
<?php foreach($_FILES["miarchivo"]['tmp_name'] as $key => $tmp_name) { //condicional si el fuchero existe if($_FILES["miarchivo"]["name"][$key]) { // Nombres de archivos de temporales $archivonombre = $_FILES["miarchivo"]["name"][$key]; $fuente = $_FILES["miarchivo"]["tmp_name"][$key]; $carpeta = 'archivos/'; //Declaramos el nombre de la carpeta que guardara los archivos if(!file_exists($carpeta)){ mkdir($carpeta, 0777) or die("Hubo un error al crear el directorio de almacenamiento"); } $dir=opendir($carpeta); $target_path = $carpeta.'/'.$archivonombre; //indicamos la ruta de destino de los archivos if(move_uploaded_file($fuente, $target_path)) { echo "Los archivos $archivonombre se han cargado de forma correcta.<br>"; } else { echo "Se ha producido un error, por favor revise los archivos e intentelo de nuevo.<br>"; } closedir($dir); //Cerramos la conexion con la carpeta destino } } ?>
Resultado al subir ficheros

Veamos una pequeña diferencia para cargar ficheros al servidor
Los input por lo general utilizamos «$_POST » o «GET»para recuperar el valor del elemento, para este ejemplo lo reemplazaremos con $_FILES.
El código cargar los archivo a la carpeta de destino especificada, en este ejemplo «archivos».

Descargar código fuente